package controller;

import dao.ConteudoJpaController;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import dao.exceptions.NonexistentEntityException;
import model.Area;
import model.Conteudo;
import model.Plano;
import model.Turma;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;
import pagecontroller.JsfUtil;

/**
 *
 * @author Edilson Fernandes da Costa
 * @version 1.0
 */
public class ConteudoController extends Controller{

    public ConteudoController() {
        if (JsfUtil.getObjectFromSession("ConteudoJpaController") == null) {
            jpaController = new ConteudoJpaController();
        } else {
            jpaController = (ConteudoJpaController) JsfUtil.getObjectFromSession("ConteudoJpaController");
        }
    }
    private Conteudo conteudo = null;
    private Conteudo conteudoAux = null;
    private ConteudoJpaController jpaController = null;
    private List<Conteudo> conteudos = null;
    private Plano plano;


   public String persiste() {
        if (conteudo.getId() == null) {
            return create();
        } else {
            return update();
        }
    }

    public String update() {
        try {
            jpaController.edit(this.conteudo);
            conteudoAux = conteudo;
            this.conteudo = null;
            JsfUtil.addSuccessMessage("Conteudo Atualizado com Sucesso");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ConteudoController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ConteudoController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "refreshPage";
    }

    public String create() {
        try {
            jpaController.create(conteudo);
            conteudoAux = conteudo;
            conteudo = null;
            JsfUtil.addSuccessMessage("Conteudo cadastrado com sucesso.");

            //metodo para associar a ementa ao conteudo


            getPageManager().setPageConteudoRelat();
        } catch (Exception e) {
            JsfUtil.ensureAddErrorMessage(e, "Ocorreu um erro na percistencia dos dados.");
            return null;
        }
        return "refreshPage";
    }

    public String edit() {
        Conteudo conteudoTemp = (Conteudo) JsfUtil.getObjectFromRequestParameter("conteudo");
        this.conteudo = conteudoTemp;
        return "refreshPage";
    }

    public String destroy() {
        Conteudo conteudoTemp = (Conteudo) JsfUtil.getObjectFromRequestParameter("conteudo");
        try {
            jpaController.destroy(conteudoTemp.getId());
            JsfUtil.addSuccessMessage("Conteudo removido com sucesso.");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ConteudoController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }


        public String destroyButton() {
        Conteudo conteudoTemp = conteudoAux;
        try {
            jpaController.destroy(conteudoTemp.getId());
            JsfUtil.addSuccessMessage("Conteudo removida com sucesso.");
            conteudoAux = null;

        } catch (NonexistentEntityException ex) {
            Logger.getLogger(AlunoController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }


        public String load() {
        conteudoAux = (Conteudo) JsfUtil.getObjectFromRequestParameter("conteudoTemp");
        getPageManager().setPageConteudoRelat();
        return "refreshPage";
    }

    public String editButton() {
        this.conteudo = conteudoAux;
        getPageManager().setPageConteudoCad();

        return "refreshPage";
    }



    public Conteudo getConteudo() {
        if (conteudo == null) {
            conteudo = new Conteudo();
            conteudo.setPlano(plano);
        }
        return conteudo;
    }

    public List<Conteudo> getConteudos(){
        this.conteudos = jpaController.findConteudoEntities();
        return this.conteudos;
    }

    public ConteudoJpaController getJpaController() {
        return jpaController;
    }

    public Conteudo getConteudoAux() {
        return conteudoAux;
    }

    public Plano getPlano() {
        if(plano ==  null){
            PlanoController planoController = (PlanoController) JsfUtil.getObjectFromSession("PlanoController");
            if(planoController == null){
                planoController = new PlanoController();
            }
            plano = planoController.getPlanoAux();
        }
        return plano;
    }

    public void setPlano(Plano plano) {
        this.plano = plano;
    }

    List<Conteudo> getConteudos(String searchConteudo) {
        return jpaController.findConteudo(searchConteudo);
    }
    
    List<Conteudo> getConteudos(Plano plano) {
        return jpaController.findConteudo(plano);
    }


}
